There are valid cases for passing a variable multiple times into the same function or procedure call, but usually doing so is a mistake, and
something else was intended for one of the arguments.
Noncompliant code example
SET @result = dbo.MyAdd(@val1, @val1) -- Noncompliant
Compliant solution
SET @result = dbo.MyAdd(@val1, @val2)